#if _MSC_VER
 #pragma once
#endif

#ifndef __HERZELEID_CONVERTER_INCLUDED__
#define __HERZELEID_CONVERTER_INCLUDED__
#include "HerzeleidPrecompiled.hxx"
using namespace Reign::Standard;

namespace Herzeleid
{
//	// Native DirectX type
//	namespace DirectXNative
//	{
//		// Native DirectX converter
//		namespace Converter
//		{
//			//String8 ToString( _In_ ShaderDx11::EShader ShaderType );
//			Reign::Standard::String8 ToString( _In_ const D3D_SHADER_VARIABLE_CLASS &ShaderVariableClass );
//			Reign::Standard::String8 ToString( _In_ const D3D_SHADER_VARIABLE_FLAGS &ShaderVariableFlags );
//			Reign::Standard::String8 ToString( _In_ const D3D_SHADER_VARIABLE_TYPE &ShaderVariableType );
//			Reign::Standard::String8 ToString( _In_ const D3D_SHADER_INPUT_FLAGS &ShaderInputFlags );
//			Reign::Standard::String8 ToString( _In_ const D3D_SHADER_INPUT_TYPE &ShaderInputType );
//			Reign::Standard::String8 ToString( _In_ const D3D_SHADER_CBUFFER_FLAGS &ShaderConstantBufferFlags );
//			Reign::Standard::String8 ToString( _In_ const D3D_CBUFFER_TYPE &ConstantBufferType );
//			Reign::Standard::String8 ToString( _In_ const D3D_NAME &Name );
//			Reign::Standard::String8 ToString( _In_ const D3D_RESOURCE_RETURN_TYPE &ResourceReturn );
//			Reign::Standard::String8 ToString( _In_ const D3D_REGISTER_COMPONENT_TYPE &RegisterComponentType );
//			Reign::Standard::String8 ToString( _In_ const D3D_TESSELLATOR_DOMAIN &TesselatorDomain );
//			Reign::Standard::String8 ToString( _In_ const D3D_TESSELLATOR_PARTITIONING &TesselatorPartitioning );
//			Reign::Standard::String8 ToString( _In_ const D3D_TESSELLATOR_OUTPUT_PRIMITIVE &TesselatorOutputPrimitive );
//			Reign::Standard::String8 ToString( _In_ const D3D_PRIMITIVE_TOPOLOGY &PrimitiveTopology );
//			Reign::Standard::String8 ToString( _In_ const D3D_PRIMITIVE &Primitive );
//			//String8 ToString( _In_ D3DX11_IMAGE_FILE_FORMAT ImageFormat );
//#ifdef HERZELEID_DESKTOP
//			Reign::Standard::String8 ToString( _In_ const D3D11_SHADER_DESC &ShaderDescription );
//#endif
//		};
//	};

	namespace Standard
	{
		// Standard type converter
		namespace Converter
		{
			/// String8 to number
			void ToNumber( _In_z_ const Reign::Standard::String16 &szValue16, _Outref_ Float64 &fValue64);
			void ToNumber( _In_z_ const Reign::Standard::String16 &szValue16, _Outref_ Float32 &fValue32);
			void ToNumber( _In_z_ const Reign::Standard::String16 &szValue16, _Outref_ Int64 &iValue64);
			void ToNumber( _In_z_ const Reign::Standard::String16 &szValue16, _Outref_ Int32 &iValue32);
			/// String8 to number
			void ToNumber( _In_z_ const Reign::Standard::String8 &szValue8, _Outref_ Float64 &fValue64);
			void ToNumber( _In_z_ const Reign::Standard::String8 &szValue8, _Outref_ Float32 &fValue32);
			void ToNumber( _In_z_ const Reign::Standard::String8 &szValue8, _Outref_ Int64 &iValue64);
			void ToNumber( _In_z_ const Reign::Standard::String8 &szValue8, _Outref_ Int32 &iValue32);
			/// Number to string 16
			void ToString( _Outref_ Reign::Standard::String16 &szValue16, _In_ const Float64 &fValue64);
			void ToString( _Outref_ Reign::Standard::String16 &szValue16, _In_ const Float32 &fValue32);
			void ToString( _Outref_ Reign::Standard::String16 &szValue16, _In_ const Int64 &iValue64);
			void ToString( _Outref_ Reign::Standard::String16 &szValue16, _In_ const Int32 &iValue32);
			void ToString( _Outref_ Reign::Standard::String16 &szValue16, _In_ const UInt64 &uiValue64);
			void ToString( _Outref_ Reign::Standard::String16 &szValue16, _In_ const UInt32 &uiValue32);
			/// Number to string 8
			void ToString( _Outref_ Reign::Standard::String8 &szValue8, _In_ const Float64 &fValue64);
			void ToString( _Outref_ Reign::Standard::String8 &szValue8, _In_ const Float32 &fValue32);
			void ToString( _Outref_ Reign::Standard::String8 &szValue8, _In_ const Int64 &iValue64);
			void ToString( _Outref_ Reign::Standard::String8 &szValue8, _In_ const Int32 &iValue32);
			void ToString( _Outref_ Reign::Standard::String8 &szValue8, _In_ const UInt64 &uiValue64);
			void ToString( _Outref_ Reign::Standard::String8 &szValue8, _In_ const UInt32 &uiValue32);
			/// String8 2 String8 and vice versa
			void String8To16(_In_z_ const Reign::Standard::String8 &szValue8, _Outref_ Reign::Standard::String16 &szValue16);
			void String16To8( _Outref_ Reign::Standard::String8 &szValue8, _In_z_ const Reign::Standard::String16 &szValue16);
		};
	};
};

#endif // !HERZELEID_CONVERTER_INCLUDED__
